package ustc.xiaoyang.karl.hashtable;

import java.util.HashMap;
import java.util.Map;

/**
 * 454.四数相加II medium
 */
public class AddtionOfFourNumbersII454 {
    public static void main(String[] args) {

        System.out.println(fourSumCount(new int[]{1,2},new int[]{-2,-1},new int[]{-1,2},new int[]{0,2}));
    }
    public static int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {
        //使用map1记录nums1和nums2的和，遍历nums3和nums4的所有和，找出和的负数在map1中的个数，累加求出元组数量
        Map<Integer,Integer> map = new HashMap<>();
        int res = 0;
        for(int i = 0; i < nums1.length; i++){
            for(int j = 0; j < nums2.length; j++){
                int sum = nums1[i] + nums2[j];
                map.put(sum,map.getOrDefault(sum,0)+1);
            }
        }
        for(int i = 0; i < nums3.length; i++){
            for(int j = 0; j < nums4.length; j++){
                int sum = -(nums3[i]+nums4[j]);
                if(map.containsKey(sum)) res += map.get(sum);
            }
        }
        return res;
    }
}
